Confusion Matrix এবং ROC-AUC Curve হল মেশিন লার্নিং মডেলগুলির কার্যকারিতা মূল্যায়নের জন্য ব্যবহৃত দুটি গুরুত্বপূর্ণ টুল। এই দুটি টুল মডেলটির পারফরম্যান্স বিশ্লেষণ করতে সাহায্য করে, বিশেষত যখন ডেটা অসম্পূর্ণ বা শ্রেণীভিত্তিক সমস্যা (classification problems) থাকে।
Confusion Matrix
Confusion Matrix হল একটি টেবিল যা শ্রেণীবিভাগ (classification) মডেলটির পারফরম্যান্সের বিশ্লেষণ করতে ব্যবহৃত হয়। এটি প্রকৃত এবং পূর্বাভাসিত শ্রেণির মধ্যে সম্পর্ক দেখানোর জন্য ব্যবহৃত হয়। এটি সাধারণত চারটি অংশে ভাগ করা হয়:
- True Positives (TP): সঠিকভাবে পজিটিভ শ্রেণীতে পূর্বাভাস করা হয়েছে।
- True Negatives (TN): সঠিকভাবে নেগেটিভ শ্রেণীতে পূর্বাভাস করা হয়েছে।
- False Positives (FP): ভুলভাবে পজিটিভ শ্রেণীতে পূর্বাভাস করা হয়েছে (Type I error)।
- False Negatives (FN): ভুলভাবে নেগেটিভ শ্রেণীতে পূর্বাভাস করা হয়েছে (Type II error)।
Confusion Matrix এর মাধ্যমে মডেলের প্রিসিশন, রিকল, এফ-স্কোর (F-score) ইত্যাদি মূল্যায়ন করা যায়।
Confusion Matrix এর গঠন:
| Predicted Positive | Predicted Negative | |
|---|---|---|
| Actual Positive | True Positive (TP) | False Negative (FN) |
| Actual Negative | False Positive (FP) | True Negative (TN) |
Confusion Matrix তৈরি করতে Python কোড:
from sklearn.metrics import confusion_matrix
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# উদাহরণ ডেটা: প্রকৃত এবং পূর্বাভাস
y_true = [1, 0, 1, 1, 0, 1, 0, 1, 0, 1]
y_pred = [1, 0, 0, 1, 0, 1, 0, 0, 0, 1]
# Confusion Matrix হিসাব করা
cm = confusion_matrix(y_true, y_pred)
# Confusion Matrix প্রদর্শন
plt.figure(figsize=(6, 4))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=['Negative', 'Positive'], yticklabels=['Negative', 'Positive'])
plt.title('Confusion Matrix')
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.show()
Confusion Matrix থেকে গুরুত্বপূর্ণ পরিমাপগুলি:
- Accuracy = (TP + TN) / (TP + TN + FP + FN)
- Precision = TP / (TP + FP) — এটি জানায়, পূর্বাভাস করা পজিটিভ কতটা সঠিক।
- Recall (Sensitivity) = TP / (TP + FN) — এটি জানায়, আসল পজিটিভ কতটা সঠিকভাবে পূর্বাভাস করা হয়েছে।
- F1-Score = 2 * (Precision * Recall) / (Precision + Recall) — Precision এবং Recall এর একটি ভারসাম্যপূর্ণ পরিমাপ।
ROC-AUC Curve
ROC Curve (Receiver Operating Characteristic Curve) হল একটি গ্রাফিক্যাল পদ্ধতি যা একটি বায়নারি শ্রেণীভিত্তিক মডেল (যেমন, লজিস্টিক রিগ্রেশন, SVM) এর কার্যকারিতা দেখানোর জন্য ব্যবহৃত হয়। এটি True Positive Rate (TPR) এবং False Positive Rate (FPR) এর মধ্যে সম্পর্ক প্রদর্শন করে।
- True Positive Rate (TPR) বা Recall = TP / (TP + FN)
- False Positive Rate (FPR) = FP / (FP + TN)
ROC Curve তে, X-axis হল False Positive Rate (FPR) এবং Y-axis হল True Positive Rate (TPR)। একটি আদর্শ মডেল তার TPR কে FPR এর তুলনায় বেশি রাখে, এবং এটি (0, 1) পয়েন্টের কাছাকাছি থাকে। মডেলটির পারফরম্যান্স যত ভাল হবে, ততই এই পয়েন্টের দিকে যাবে।
AUC (Area Under the Curve) হল ROC Curve এর নিচে থাকা এলাকা। AUC এর মান 0 থেকে 1 এর মধ্যে থাকে। AUC এর মান যদি 0.5 হয়, তা হলে মডেলটি এককোণে (random) পূর্বাভাস দেয়, এবং যদি AUC 1.0 হয়, তা হলে মডেলটি অত্যন্ত ভাল কাজ করছে।
- AUC = 0.5: মডেলটি এলোমেলো (random) পূর্বাভাস দেয়।
- AUC = 1: মডেলটি নিখুঁত পূর্বাভাস দেয়।
ROC Curve তৈরি করতে Python কোড:
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
# উদাহরণ ডেটা: প্রকৃত এবং পূর্বাভাসের স্কোর
y_true = [1, 0, 1, 1, 0, 1, 0, 1, 0, 1]
y_scores = [0.9, 0.1, 0.8, 0.7, 0.4, 0.6, 0.3, 0.9, 0.2, 0.85]
# FPR, TPR এবং AUC গণনা করা
fpr, tpr, thresholds = roc_curve(y_true, y_scores)
roc_auc = auc(fpr, tpr)
# ROC Curve প্লট করা
plt.figure()
plt.plot(fpr, tpr, color='blue', label=f'ROC curve (AUC = {roc_auc:.2f})')
plt.plot([0, 1], [0, 1], color='gray', linestyle='--') # Diagonal line (random classifier)
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.legend(loc='lower right')
plt.show()
Confusion Matrix এবং ROC-AUC Curve এর মধ্যে পার্থক্য:
- Confusion Matrix:
- এটি ক্লাসিফিকেশন মডেলের সঠিক এবং ভুল পূর্বাভাসগুলির একটি টেবিলিক রিপ্রেজেন্টেশন সরবরাহ করে।
- এটি সুনির্দিষ্ট শ্রেণীভিত্তিক পরিমাপ যেমন Precision, Recall, Accuracy, F1-Score নির্ধারণে সাহায্য করে।
- ROC Curve এবং AUC:
- ROC curve একটি গ্রাফিক্যাল ভিউ প্রদান করে, যেখানে মডেলের পারফরম্যান্সের প্রতি ক্লাসের বিভাজন দেখানো হয়।
- AUC মান দ্বারা মডেলের কার্যকারিতা পরিমাপ করা হয়, যা মডেলের পারফরম্যান্সের সার্বিক মূল্যায়ন করে।
সারাংশ:
- Confusion Matrix ব্যবহার করে আপনি ক্লাসিফিকেশন মডেলের সঠিক এবং ভুল পূর্বাভাস সম্পর্কে বিশদ তথ্য পেতে পারেন এবং বিভিন্ন পরিমাপ (যেমন Precision, Recall, Accuracy) বের করতে পারেন।
- ROC-AUC Curve মডেলের পারফরম্যান্সের গুণমান দেখতে এবং মডেলটির কার্যকারিতা বিশ্লেষণ করতে ব্যবহৃত হয়। ROC curve দ্বারা মডেলের True Positive Rate এবং False Positive Rate এর মধ্যে সম্পর্ক দেখা যায়, আর AUC দ্বারা মডেলের সামগ্রিক কার্যকারিতা মূল্যায়ন করা হয়।
এই দুটি টুলই মডেল নির্বাচনে এবং মডেল টিউনিংয়ে গুরুত্বপূর্ণ ভূমিকা রাখে।
Read more